package main

import "fmt"

func main() {

	/*
		单向：定向
		chan <- T, 只支持写
		<- chan T, 只支持读
	*/
	//ch1 := make(chan int)	// 双向，读，写
	//ch2 := make(chan <- int)	// 单向，只能写，不能读
	//ch3 := make(chan <- int)	// 单向，只能读，不能写

	// 此处是双向通道
	channel := make(chan int)

	go producer(channel)

	consumer(channel)
}

// 传入生产者的时候被转化为单向只写通道
func producer(send chan<- int) {
	for i := 0; i < 10; i++ {
		send <- i
	}
	close(send)
}

// 传入消费者的时候被转化为单向只读通道
func consumer(receive <-chan int) {
	for num := range receive {
		fmt.Println("receive", num)
	}
}
